package utils

import (
	"strconv"
	"strings"
)

// ConvertToStringInterfaceSlice 将 []string 转换为 []interface{}
func ConvertToStringInterfaceSlice(slice []string) []interface{} {
	result := make([]interface{}, len(slice))
	for i, v := range slice {
		result[i] = v
	}
	return result
}

// CommaSeparatedStringToInt64Slice 将逗号分隔的多个数字字符串转换为 []int64
func CommaSeparatedStringToInt64Slice(input string) []int64 {
	// 使用 strings.Split 将字符串按逗号分割成切片
	strSlice := strings.Split(input, ",")

	// 创建一个 int64 切片来存储转换后的结果
	var int64Slice []int64

	// 遍历字符串切片，将每个字符串转换为 int64
	for _, str := range strSlice {
		// 去除字符串两端的空白字符
		str = strings.TrimSpace(str)
		if str == "" {
			continue
		}
		// 使用 strconv.ParseInt 将字符串转换为 int64
		num, err := strconv.ParseInt(str, 10, 64)
		if err != nil {
			return nil
		}
		int64Slice = append(int64Slice, num)
	}

	return int64Slice
}

// CommaSeparatedStringToStringSlice 将逗号分隔的多个字符串转换为 []string
func CommaSeparatedStringToStringSlice(input string) []string {
	// 使用 strings.Split 将字符串按逗号分割成切片
	strSlice := strings.Split(input, ",")

	// 创建一个字符串切片来存储转换后的结果
	var result []string

	// 遍历字符串切片，去除每个字符串两端的空白字符
	for _, str := range strSlice {
		trimmedStr := strings.TrimSpace(str)
		if trimmedStr != "" {
			result = append(result, trimmedStr)
		}
	}

	return result
}
